package com.zhu.instructions.math;

import com.zhu.instructions.base.NoOperandsInstruction;
import com.zhu.rtda.Frame;
import com.zhu.rtda.OperandStack;

/**
 * 指令：fneg
 *
 * 操作数：无
 *
 * 功能：
 *  将栈顶的 float 值取负：-value
 *
 * 栈变化：
 *      ..., value(float) → ..., result(float)
 *
 * 示例：
 *  fneg → -5.5f 变为 5.5f
 *
 * 实现：
 *  使用一元 - 操作符对 float 值取负
 */
public class FNEG extends NoOperandsInstruction {
    @Override
    public void execute(Frame frame) {
        OperandStack stack = frame.getOperandStack();
        float val = stack.popFloat();
        stack.pushFloat(-val);
    }
}